/***************************************************************
 *
 * Filename：Serve.h
 * Abstract：the design of TCP and UDP 
 * version ：1.0
 * 
 * Copyright (c) 2011 SCUT DT&P FY&XC
 * 
***************************************************************/  

#include <QtGui>
#include <QtNetwork>
#include <QDebug>
#include "ipmsg.h"
//#include "switch.h"

class Serve : public QObject
{
	Q_OBJECT

public:
        Serve();
	MessagePRO *msgmng;
        //Switch *chgcode;
	QUdpSocket *udpSocket;	
        QString localuserphoto;
        //QTextCodec* gbk_codec;
        QTextCodec *gbk;
        QTextCodec *utg8;
	void	msgBrEntry(MessagePRO *msg);
        //UTF-8 转换 GBK
        QString UtoG(QString utfStr) {
               return gbk->toUnicode(utfStr.toLocal8Bit());
        }
        //GBK 转换 UTF-8
        QString GtoU(QString gbkStr) {
               return utg8->toUnicode(gbkStr.toUtf8());
        }


	void	msgAnsEntry(MessagePRO *msg);
	void	msgBrAbsence(MessagePRO *msg);

	void	msgRecvMsg(MessagePRO *msg);
	void	msgReadMsg(MessagePRO *msg);
	void	msgBrIsGetList(MessagePRO *msg);
	void	msgOkGetList(MessagePRO *msg);
	void	msgGetList(MessagePRO *msg);
	void	msgAnsList(MessagePRO *msg);
	void	msgGetInfo(MessagePRO *msg);
	void	msgSendInfo(MessagePRO *msg);
	void	msgGetPubKey(MessagePRO *msg);
	void	msgAnsPubKey(MessagePRO *msg);
	void	msgGetAbsenceInfo(MessagePRO *msg);
	void	msgSendAbsenceInfo(MessagePRO *msg);
	void	msgReleaseFiles(MessagePRO *msg);
	void	msgInfoSub(MessagePRO *msg);
        void    msgRevcFile(MessagePRO *msg);
        void    msgRefuseSFile(MessagePRO *msg);

signals:
	void	msgBrExit(MessagePRO *msg);
        void	msgSendMsg(MessagePRO *msg);
        void    msgRevcFileName(MessagePRO *msg);
	void	addUser(MessagePRO *msg);
        void    msgRefuseFile(MessagePRO *msg);
        void    chgphoto(MessagePRO *msg);

public slots:

	void	broadcast(unsigned long command, QString extend);
        void	sendUdp(MessagePRO *,bool flag=true);
	void	receiveUdp();

};
